package com.ankicoo.file.service;

import com.ankicoo.file.entity.FileInfoPO;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;

/**
 * Description: 文件信息处理
 *
 * @author : QCYANG
 * @date : 2021/7/15 18:06
 */
public interface FileInfoService {
    /**
     * 通过id 查找数据库文件对象信息
     * @param fileId 文件编号
     * @return 文件信息
     */
    FileInfoPO findFileInfoBuId(Integer fileId);

    /**
     * 保存新的文件
     * @param multipartFile 前端表单提交文件对象
     * @return 文件对象
     */
    FileInfoPO saveNewFile(MultipartFile multipartFile);

    /**
     * 保存文件
     * @param fileInfo 文件对象细腻
     * @param inputStream 文件流
     */
    void saveFile(FileInfoPO fileInfo, InputStream inputStream);

    /**
     * 打开文件流
     * @param fileId 文件id
     * @return 流
     */
    InputStream openInputStream(Integer fileId);

    /**
     * 整合文件实际路径及名称
     * @param fileId 文件id
     * @param fileName 文件名称
     * @param fileType 文件类型
     * @return 完整路径
     */
    String concatFilePath(Integer fileId, String fileName, String fileType);
}
